package com.neuedu.corejava.jdbc.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import com.neuedu.corejava.jdbc.DBHelper;
import com.neuedu.corejava.jdbc.bean.Users;
import com.neuedu.corejava.jdbc.dao.IUserDao;

public class UserDaoImpl implements IUserDao {

	@Override
	public boolean add(Users param) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public boolean edit(Users param) {
		// TODO Auto-generated method stub
		return false;
	}

	@Override
	public Users deleteById(int id) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Users findById(int id) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<Users> findAll() {
		List<Users>list=new ArrayList<>();
		
		//1.注册驱动 2.建立connection连接
		Connection conn =DBHelper.openConnection();
		//Statement statement;//可能造成sql注入攻击
		PreparedStatement stmt=null;//可以防止sql注入攻击，在批量更新时有更好的性能
		ResultSet rs=null;
		
		try {
			//3打开状态链接
			String sql="select id,name name1,age,birthdate from users";
			stmt=conn.prepareStatement(sql);
			//4.执行sql
			rs=stmt.executeQuery();
			//5.对sql执行结果进行处理
			while(rs.next()) {//next()方法从结果集中取出一行数据，如果有数据返回true，没有数据返回false
				int id=rs.getInt(1);//可以根据列的序号获取列的数据，列的序号从1开始，1表示第一列
			//	String name =rs.getString("name");//可以根据列名或列的别名获取列的数据
				String name =rs.getString("name1");
				int age=rs.getInt("age");
				
				//getTimestamp,返回java.sql.Timestamp,sql.Timestamp是java.util.Date的子类，可以保存：年月日时分秒
				Date birthdate =rs.getTimestamp("birthdate");
				
				//getDate,返回java.sql.Date,sql.Date是java.util.Date的子类，可以保存：年月日
				//birthdate=rs.getDate("birthdate");//
				
				//getTime,返回java.sql.Time,sql.Time是java.util.Date的子类，可以保存：时分秒
				//birthdate =rs.getTime("birthdate");//班车发出时刻，飞机的飞行时刻表
				
				Users users=new Users(id,name,age,birthdate);
				list.add(users);
				
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			//6关闭连接
			DBHelper.closeAll(rs, stmt, conn);
		}
		
		
		return list;
	}

	@Override
	public List<Users> findByExample(Users param) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public List<Users> findByExample(Integer page, int size) {
		// TODO Auto-generated method stub
		return null;
	}

}
